home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / videocap / meanfilt.asm next >
Assembly Source File  |  1995-08-14  |  2KB  |  121 lines

  1. ;-----------------------------------------------------------------------------
  2. ;ビデオキャプチャーユーティリティー
  3. ;By 福地健太郎
  4. ;1995/8/9
  5. ;[usage]
  6. ;1.add picture
  7. ;    callm rex addres  , bank addres, picture addres
  8. ;2.bank to picture
  9. ;    callm rex addres+5, bank addres, picture addres, number of picture
  10. ;-----------------------------------------------------------------------------
  11.  
  12. ;define
  13.  
  14. argBANK        equ        4
  15. argPIC        equ        8
  16. argNUM        equ        12
  17.  
  18. PIC_SIZE    equ        320*240
  19.  
  20. ;-----------------------------------------------------------------------------
  21. ;code
  22. ;-----------------------------------------------------------------------------
  23.  
  24.     jmp        BANK
  25.     jmp        PIC
  26.  
  27. ;-----------------------------------------------------------------------------
  28. ;バンクに登録する
  29. BANK:
  30.     mov        esi,[esp+argPIC]
  31.     mov        ecx,PIC_SIZE/2
  32.     mov        edi,[esp+argBANK]
  33. #LOOP1:
  34.     mov        edx,[esi]
  35.  
  36.     mov        eax,edx
  37.     and        ax,0000000000011111b
  38.     add        [edi  ],ax
  39.  
  40.     mov        eax,edx
  41.     shr        eax,5
  42.     and        ax,0000000000011111b
  43.     add        [edi+2],ax
  44.  
  45.     mov        eax,edx
  46.     shr        eax,10
  47.     and        ax,0000000000011111b
  48.     add        [edi+4],ax
  49.  
  50.     mov        eax,edx
  51.     shr        eax,16
  52.     and        ax,0000000000011111b
  53.     add        [edi+6],ax
  54.  
  55.     mov        eax,edx
  56.     shr        eax,21
  57.     and        ax,0000000000011111b
  58.     add        [edi+8],ax
  59.  
  60.     mov        eax,edx
  61.     shr        eax,26
  62.     and        ax,0000000000011111b
  63.     add        [edi+10],ax
  64.  
  65.     add        esi,4
  66.     add        edi,12
  67.     dec        ecx
  68.     jnz        #LOOP1
  69.  
  70.     ret
  71.  
  72. PIC:
  73.     mov        edi,[esp+argPIC]
  74.     mov        ebp,PIC_SIZE
  75.     mov        esi,[esp+argBANK]
  76.     xor        eax,eax
  77.     mov        ecx,[esp+argNUM]
  78. #LOOP1:
  79.     xor        edx,edx
  80.     mov        ax,[esi]
  81.     div        cl
  82.     movzx    eax,al
  83.     cmp        eax,31
  84.     jna        #B_NEXT
  85.     mov        eax,31
  86. #B_NEXT:
  87.     or        edx,eax
  88.  
  89.     mov        ax,[esi+2]
  90.     div        cl
  91.     movzx    eax,al
  92.     cmp        eax,31
  93.     jna        #R_NEXT
  94.     mov        eax,31
  95. #R_NEXT:
  96.     shl        eax,5
  97.     or        edx,eax
  98.  
  99.     mov        ax,[esi+4]
  100.     div        cl
  101.     movzx    eax,al
  102.     cmp        eax,31
  103.     jna        #G_NEXT
  104.     mov        eax,31
  105. #G_NEXT:
  106.     shl        eax,10
  107.     or        edx,eax
  108.  
  109.     mov        [edi],dx
  110.     add        esi,6
  111.     add        edi,2
  112.     dec        ebp
  113.     jnz        #LOOP1
  114. ;clear bank
  115.     mov        ecx,PIC_SIZE*3/2
  116.     mov        edi,[esp+argBANK]
  117.     xor        eax,eax
  118.     rep stosd
  119.  
  120.     ret
  121.